import logging
import os
from logging.handlers import TimedRotatingFileHandler, RotatingFileHandler

from weixin_modules.inner_settings import file_log


def get_log_path(serialno):
    dirname = os.path.join(file_log, serialno)
    if not os.path.exists(dirname):
        os.makedirs(dirname)
    return os.path.join(dirname, "log.log")


def init_logger(serialno_url, divace_name):
    """
    在控制台的输出中加入手机名称 ，方便识别，
    设置输出的文件地址，
    :param serialno:
    :param divace_name:
    :return:
    """
    # 文件名不包含以下任何字符：”（双引号）、*（星号）、<（小于）、>（大于）、?（问号）、\（反斜杠）、|（竖线）、/ (正斜杠)、 : (冒号)
    # 文件名不能包含下列任何字符 \ / ： * ？" < > |
    serialno = serialno_url.replace(":", "-")
    # 设置第1个 handler
    formatter = logging.Formatter(
        fmt='[%(asctime)s][%(levelname)s]<%(name)s>{}| %(message)s'.format(divace_name),
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    streamhandler = logging.StreamHandler()
    streamhandler.setFormatter(formatter)
    streamhandler.setLevel(logging.INFO)
    # 设置第2个 handler

    filename = get_log_path(serialno)
    # 创建一个RotatingFileHandler，当文件大小超过5MB时进行旋转，最多保留3个日志文件
    handler2 = RotatingFileHandler(filename, maxBytes=5 * 1024 * 1024, backupCount=3,encoding="utf-8")
    handler2.setFormatter(formatter)
    handler2.setLevel(logging.DEBUG)

    # 获取日志记录器并添加处理器
    root_logger = logging.getLogger("uiauto_weixin")
    root_logger.setLevel(logging.DEBUG)  # 设置根日志记录器的默认级别
    root_logger.addHandler(streamhandler)
    root_logger.addHandler(handler2)
    return root_logger


if __name__ == '__main__':
    logger = init_logger("1112", "手机")
    # 记录不同级别的日志
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')
